const counterModule = {
  namespaced: true, // 启用命名空间（名字空间）
  state: { // 状态数据
    count: 99, // 计数数量
    // count: JSON.parse(localStorage.getItem('count')) || 0
  },
  getters: { // 计算值
    doubleCount(state) {
      return state.count * 2
    }
  },
  mutations: { // 同步方法，用于更改状态数据
    /**
     * 加数量
     * @param {*} state 状态对象
     * @param {*} payload 有效载荷（比如每次加数量时加多少）
     */
    add(state, payload = 1) {
      state.count += payload
    },

    minus(state) {
      state.count -= 1
    },
  },
  actions: { // 与 mutation 类似的方法，但不能直接更改状态，可包含异步逻辑
    /**
     * action 方法，实现异步加数据操作
     * @param {*} context 上下文对象，这个对象的结构与 store 的结构一致
     * @param {*} payload 
     */
    asyncAdd(context, payload) {
      // 在 action 方法中，不能直接更改状态数据，而是
      // 需要提交 mutation 更改状态
      setTimeout(() => {
        context.commit('add', payload)
      }, 2000)
    },
  },
}

export default counterModule
